package com.youzan.open.sdk.gen.v3_0_0.model;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.youzan.open.sdk.model.APIParams;
import com.youzan.open.sdk.model.ByteWrapper;
import com.youzan.open.sdk.model.FileParams;
import java.util.List;
import java.util.Map;
import java.util.Date;

public class YouzanPaySubmerchantOpenParams implements APIParams, FileParams  {

    /**
     * 营业期限 起
     */
    private Long bizEffectiveFrom;
    /**
     * 营业期限 止
     */
    private Long bizExpiredOn;
    /**
     * 注册地址
     */
    private String businessAddress;
    /**
     * 营业执照号
     */
    private String businessLicense;
    /**
     * 营业执照照片URL
     */
    private String businessLicensePhotoUri;
    /**
     * 企业名字
     */
    private String businessName;
    /**
     * 经营范围
     */
    private String businessScope;
    /**
     * 联系人邮箱
     */
    private String contactMail;
    /**
     * 联系人手机
     */
    private String contactPhone;
    /**
     * 联系人姓名
     */
    private String contactsName;
    /**
     * 证件反面照片
     */
    private String idCardBackPhotoUri;
    /**
     * 证件正面照片
     */
    private String idCardFrontPhotoUri;
    /**
     * 手持证件照片
     */
    private String idCardInHandPhotoUri;
    /**
     * 法人名字
     */
    private String idCardName;
    /**
     * 法人证件号码
     */
    private String idCardNo;
    /**
     * 法人证件类型 Enum(1: 中国大陆身份证 2: 香港身份证 3: 台湾身份证 4: 澳门身份证 5: 中国大陆护照 6: 港澳通行证 7: 台湾通行证)
     */
    private Long idCardType;
    /**
     * 法人证件期限 起
     */
    private Long idEffectiveFrom;
    /**
     * 法人证件期限 止
     */
    private Long idExpiredOn;
    /**
     * 组织机构代码
     */
    private String organizationCode;
    /**
     * 组织机构代码证照片URL
     */
    private String organizationCodePhotoUri;
    /**
     * 外部商户号
     */
    private String outUserNo;
    /**
     * 审核地址
     */
    private String resultNoticeUri;
    /**
     * 服务描述
     */
    private String serviceDesc;
    /**
     * 服务商商户号
     */
    private Long serviceMerchantNo;
    /**
     * 客服电话
     */
    private String serviceTel;

    public void setBizEffectiveFrom(Long bizEffectiveFrom) {
        this.bizEffectiveFrom = bizEffectiveFrom;
    }

    public Long getBizEffectiveFrom() {
        return this.bizEffectiveFrom;
    }

    public void setBizExpiredOn(Long bizExpiredOn) {
        this.bizExpiredOn = bizExpiredOn;
    }

    public Long getBizExpiredOn() {
        return this.bizExpiredOn;
    }

    public void setBusinessAddress(String businessAddress) {
        this.businessAddress = businessAddress;
    }

    public String getBusinessAddress() {
        return this.businessAddress;
    }

    public void setBusinessLicense(String businessLicense) {
        this.businessLicense = businessLicense;
    }

    public String getBusinessLicense() {
        return this.businessLicense;
    }

    public void setBusinessLicensePhotoUri(String businessLicensePhotoUri) {
        this.businessLicensePhotoUri = businessLicensePhotoUri;
    }

    public String getBusinessLicensePhotoUri() {
        return this.businessLicensePhotoUri;
    }

    public void setBusinessName(String businessName) {
        this.businessName = businessName;
    }

    public String getBusinessName() {
        return this.businessName;
    }

    public void setBusinessScope(String businessScope) {
        this.businessScope = businessScope;
    }

    public String getBusinessScope() {
        return this.businessScope;
    }

    public void setContactMail(String contactMail) {
        this.contactMail = contactMail;
    }

    public String getContactMail() {
        return this.contactMail;
    }

    public void setContactPhone(String contactPhone) {
        this.contactPhone = contactPhone;
    }

    public String getContactPhone() {
        return this.contactPhone;
    }

    public void setContactsName(String contactsName) {
        this.contactsName = contactsName;
    }

    public String getContactsName() {
        return this.contactsName;
    }

    public void setIdCardBackPhotoUri(String idCardBackPhotoUri) {
        this.idCardBackPhotoUri = idCardBackPhotoUri;
    }

    public String getIdCardBackPhotoUri() {
        return this.idCardBackPhotoUri;
    }

    public void setIdCardFrontPhotoUri(String idCardFrontPhotoUri) {
        this.idCardFrontPhotoUri = idCardFrontPhotoUri;
    }

    public String getIdCardFrontPhotoUri() {
        return this.idCardFrontPhotoUri;
    }

    public void setIdCardInHandPhotoUri(String idCardInHandPhotoUri) {
        this.idCardInHandPhotoUri = idCardInHandPhotoUri;
    }

    public String getIdCardInHandPhotoUri() {
        return this.idCardInHandPhotoUri;
    }

    public void setIdCardName(String idCardName) {
        this.idCardName = idCardName;
    }

    public String getIdCardName() {
        return this.idCardName;
    }

    public void setIdCardNo(String idCardNo) {
        this.idCardNo = idCardNo;
    }

    public String getIdCardNo() {
        return this.idCardNo;
    }

    public void setIdCardType(Long idCardType) {
        this.idCardType = idCardType;
    }

    public Long getIdCardType() {
        return this.idCardType;
    }

    public void setIdEffectiveFrom(Long idEffectiveFrom) {
        this.idEffectiveFrom = idEffectiveFrom;
    }

    public Long getIdEffectiveFrom() {
        return this.idEffectiveFrom;
    }

    public void setIdExpiredOn(Long idExpiredOn) {
        this.idExpiredOn = idExpiredOn;
    }

    public Long getIdExpiredOn() {
        return this.idExpiredOn;
    }

    public void setOrganizationCode(String organizationCode) {
        this.organizationCode = organizationCode;
    }

    public String getOrganizationCode() {
        return this.organizationCode;
    }

    public void setOrganizationCodePhotoUri(String organizationCodePhotoUri) {
        this.organizationCodePhotoUri = organizationCodePhotoUri;
    }

    public String getOrganizationCodePhotoUri() {
        return this.organizationCodePhotoUri;
    }

    public void setOutUserNo(String outUserNo) {
        this.outUserNo = outUserNo;
    }

    public String getOutUserNo() {
        return this.outUserNo;
    }

    public void setResultNoticeUri(String resultNoticeUri) {
        this.resultNoticeUri = resultNoticeUri;
    }

    public String getResultNoticeUri() {
        return this.resultNoticeUri;
    }

    public void setServiceDesc(String serviceDesc) {
        this.serviceDesc = serviceDesc;
    }

    public String getServiceDesc() {
        return this.serviceDesc;
    }

    public void setServiceMerchantNo(Long serviceMerchantNo) {
        this.serviceMerchantNo = serviceMerchantNo;
    }

    public Long getServiceMerchantNo() {
        return this.serviceMerchantNo;
    }

    public void setServiceTel(String serviceTel) {
        this.serviceTel = serviceTel;
    }

    public String getServiceTel() {
        return this.serviceTel;
    }


    public Map<String, Object> toParams() {
        Map<String, Object> params = Maps.newHashMap();
        if (bizEffectiveFrom != null) {
            params.put("biz_effective_from", bizEffectiveFrom);
        }
        if (bizExpiredOn != null) {
            params.put("biz_expired_on", bizExpiredOn);
        }
        if (businessAddress != null) {
            params.put("business_address", businessAddress);
        }
        if (businessLicense != null) {
            params.put("business_license", businessLicense);
        }
        if (businessLicensePhotoUri != null) {
            params.put("business_license_photo_uri", businessLicensePhotoUri);
        }
        if (businessName != null) {
            params.put("business_name", businessName);
        }
        if (businessScope != null) {
            params.put("business_scope", businessScope);
        }
        if (contactMail != null) {
            params.put("contact_mail", contactMail);
        }
        if (contactPhone != null) {
            params.put("contact_phone", contactPhone);
        }
        if (contactsName != null) {
            params.put("contacts_name", contactsName);
        }
        if (idCardBackPhotoUri != null) {
            params.put("id_card_back_photo_uri", idCardBackPhotoUri);
        }
        if (idCardFrontPhotoUri != null) {
            params.put("id_card_front_photo_uri", idCardFrontPhotoUri);
        }
        if (idCardInHandPhotoUri != null) {
            params.put("id_card_in_hand_photo_uri", idCardInHandPhotoUri);
        }
        if (idCardName != null) {
            params.put("id_card_name", idCardName);
        }
        if (idCardNo != null) {
            params.put("id_card_no", idCardNo);
        }
        if (idCardType != null) {
            params.put("id_card_type", idCardType);
        }
        if (idEffectiveFrom != null) {
            params.put("id_effective_from", idEffectiveFrom);
        }
        if (idExpiredOn != null) {
            params.put("id_expired_on", idExpiredOn);
        }
        if (organizationCode != null) {
            params.put("organization_code", organizationCode);
        }
        if (organizationCodePhotoUri != null) {
            params.put("organization_code_photo_uri", organizationCodePhotoUri);
        }
        if (outUserNo != null) {
            params.put("out_user_no", outUserNo);
        }
        if (resultNoticeUri != null) {
            params.put("result_notice_uri", resultNoticeUri);
        }
        if (serviceDesc != null) {
            params.put("service_desc", serviceDesc);
        }
        if (serviceMerchantNo != null) {
            params.put("service_merchant_no", serviceMerchantNo);
        }
        if (serviceTel != null) {
            params.put("service_tel", serviceTel);
        }
        return params;
    }

    public Multimap<String, ByteWrapper> toFileParams() {
        Multimap<String, ByteWrapper> params = ArrayListMultimap.create();

            return params;
    }


}